package com.reload.reaactor;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.io.IOException;
import java.time.Duration;

/**
 * @Date: 2024/12/4 17:19
 * @Author: jianchenlong
 * @Description:
 */
public class FluxDemo {
    public static void main(String[] args) throws IOException {
        // Mono 0|1 个元素
        // Flux N个元素
        // 使用Flux进行包装数据，得到一个多元素的流
        // 这个流只要不消费就没用
        Flux<Integer> just = Flux.just(1, 2, 3, 4, 5);
        // 消费 --> 订阅
        // 一个流可以有任意一个消费者，对于每个消费者来说，都是对等的。相当于广播模式
        just.subscribe(System.out::println);
        just.subscribe(item -> System.out.println("e ->" + item));

        // 打字机效果  每秒产生一个递增的数据
        Flux<Long> interval = Flux.interval(Duration.ofSeconds(1));
        interval.subscribe(System.out::println);

        // Flux模拟空流
        Flux<String> empty = Flux.empty();
        empty.subscribe(System.out::println);

        Mono<String> mono = Mono.just("hello");
        mono.subscribe(System.out::println);

        System.in.read();
    }
}
